﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Marin.Entities;
using Marin.Service;

namespace Marin.UI
{
    public partial class frmListEgresos : Form
    {
        public IEgresoService egresoService;
        public frmListEgresos()
        {
            InitializeComponent();
            egresoService = new EgresoService();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            CargarData();
        }
        private void CargarData()
        {
            if (siFEcha.Checked == true)
            {
                var criterio = txtCriterio.Text == string.Empty ? null : txtCriterio.Text;
                egresoBindingSource.DataSource = 
                    egresoService.GetAllFromEgresosoByCriterioAndFechas(criterio,
                    fechaIni.Value,
                    fechaFin.Value);
            }
            else
            {
                var criterio = txtCriterio.Text == string.Empty ? null : txtCriterio.Text;
                egresoBindingSource.DataSource = 
                    egresoService.GetAllFromEgresosoByCriterioAndFechas(criterio,
                    null,
                    null);
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            var frmEgreso = new frmMttoEgreso();
            frmEgreso.AddNuevoEgreso();
            frmEgreso.ShowDialog();
            CargarData();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            var egreso = egresoBindingSource.Current as Egreso;

            if (egreso != null)
            {
                var frmIngres = new frmMttoEgreso();
                frmIngres._Egreso = egreso;
                frmIngres._UpdateEgreso();
                frmIngres.ShowDialog();
                CargarData();
            }
            else
            {
                MessageBox.Show("Debe Seleccionar Un Egreso");
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            var egreso = egresoBindingSource.Current as Egreso;

            if (egreso != null)
            {
                var rpt = MessageBox.Show(this,
                    string.Format("¿Desea eliminar el Egreso: \n {0}?", egreso.Total),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);

                if (rpt == DialogResult.Yes)
                {
                    egresoService.RemoveEgreso(egreso.Id);
                    CargarData();
                }
            }
        }

        private void frmListEgresos_Load(object sender, EventArgs e)
        {
            btnEditar.Enabled = false;
            CargarData();
            CalcularTotal();

        }

        public void CalcularTotal()
        {
            //double resul = egresoDataGridView.
            //    Rows.Cast<DataGridViewRow>().Sum(x => Convert.ToDouble(x.Cells[2].Value));

            ////mostramos la suma en el textbox y en la fila que agregamos
            //lblTotal.Text = Convert.ToString(resul);
            //DataGridViewRow rowtotal = egresoDataGridView.Rows[egresoDataGridView.Rows.Count - 1];
            //rowtotal.Cells[2].Value = resul;
            decimal total = 0;


            foreach (DataGridViewRow row in egresoDataGridView.Rows)
            {
                total += Convert.ToDecimal(row.Cells[2].Value);
            }


            lblTotal.Text = string.Format("{0:C}", total);
            //aunque si lo dejo así mostrará el mismo resultado:
            lblTotal.Text = total.ToString("C");
            //El formato lo tomará la configuración de moneda actual del sistema teniendo en cuanta que si el usuario tiene configurada como euro entones mostrará algo así:

        }
    }
}
